/**
 * HttpRequest代理
 * 用于封装发起Http请求时需要的配置与转换
 */

'use strict';

const rp = require('request-promise');
const SUCCESS_CODE = 99999;
const ERROR_CODE = 30000;

/**
 * 打包数据成协议格式
 * @param  {object}  data    将要返回给客户端的数据
 * @param  {Boolean} isError 是否是错误信息
 * @return {object}          协议格式的数据
 */
function dataPack(data, isError) {
	if (!!isError) {
		return {
			error: data ? data.toString() : 'unknown',
			code: ERROR_CODE
		};
	}

	return {
		data,
		code: SUCCESS_CODE
	};
}

/**
 * 发起post请求
 * @param  {object} data  提交给API服务器的数据
 * @return {Promise}      发起请求的Promise对象
 */
function post(url, data) {

	let options = {
		method: 'POST',
		uri: url,
		body: data,
		json: true
	};

	return rp(options)
		.then((json) => {
			if (json.code == SUCCESS_CODE) {
				// 成功
				return json.data;
			} else {
				// 失败
				throw new Error(json.data.message);
			}
		});
}

module.exports = {
	dataPack,
	post
};